thread + udalost pri ukonceni

Otázka od: Karolina Nemanska

2. 4. 2004 16:33

Ahoj,
delam aplikaci s vlakny. Pri stisku buttonu vytvorim htread a spustim. A
chci, ay thread dokonci akci, abz yavolal nejakou metodu formulare pro vypis
vysledku. Potud vse vim jak... Ale kde pak mam onen thread zrusit? Kdyz dam
free do one metody, tak to hazi chybu, pokud nastavim threadu
freeonterminate, vypada to, ze se thread nezrusi..

form.onclick
begin
...
thread.resume
end;

form.onthreaddone
begin
text:='vysledek je';
// kdyz dam tady free, tak to hlasi chybu
end;

thread.execute
begin
  neco delej
  synchronize(zavolejthreaddone);
end

thread.threaddone
begin
  onthreaddone
end

Karolina


Odpovedá: Petr Vones

2. 4. 2004 16:53

From: "Karolina Nemanska" <lafidek@seznam.cz>
> delam aplikaci s vlakny. Pri stisku buttonu vytvorim htread a spustim. A
> chci, ay thread dokonci akci, abz yavolal nejakou metodu formulare pro vypis
> vysledku. Potud vse vim jak... Ale kde pak mam onen thread zrusit? Kdyz dam

Prvni zpusob je nastavit v konstruktoru FreeOnTerminate = True, potom se
objekt threadu zrusi jakmile se dokonci kod v metode Execute.

Druhy zpusob je postupne volani metod:
Terminate
WaitFor
Free

V udalosti OnTerminate nelze uvolnit vlastni objekt threadu.

Petr Vones